import { Injectable } from '@nestjs/common';
import { PrismaService } from '../prisma/prisma.service';
import { ApiResponse } from 'src/common/reponse.interface'; // 引入统一响应格式
import * as os from 'os';
@Injectable()
export class HomeService {
  constructor(private prisma: PrismaService) {}
  // 保存访问ip
  async saveAccessIp(ip: string): Promise<ApiResponse<any>> {
    const result = await this.prisma.accessIp.create({
      data: { ip },
    });
    return {
      statusCode: 200,
      message: '保存成功',
      data: result,
    };
  }
  // 获取访问ip
  async getAccessIp(): Promise<ApiResponse<any>> {
    const result = await this.prisma.accessIp.findMany();
    return {
      statusCode: 200,
      message: '获取成功',
      data: result,
    };
  }
  // 获取访问ip数量
  async getAccessIpCount(): Promise<ApiResponse<any>> {
    const result = await this.prisma.accessIp.count();
    return {
      statusCode: 200,
      message: '获取成功',
      data: result,
    };
  }
  // 获取服务器信息/数据库信息/内存信息/CPU信息/时间信息
  async getServerInfo(): Promise<ApiResponse<any>> {
    const version = await this.prisma.$queryRaw`SELECT VERSION() AS version`;
    const serverInfo = {
      主机名: os.hostname(), // 主机名
      操作系统架构: os.arch(), // 操作系统架构
      系统运行时间: os.uptime(), // 系统运行时间
      剩余内存: (os.freemem() / 1024 / 1024 / 1024).toFixed(2) + 'GB', // 剩余内存
      数据库版本: version[0].version, // 数据库版本
      当前时间: new Date().toLocaleString(), // 当前时间
    };
    return {
      statusCode: 200,
      message: '获取成功',
      data: serverInfo,
    };
  }
}
